package fr.esisar.p2014.cs420.nsmwnr;

import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;


/**
 * Classe qui crée une boite de dialogue pour entrer un chemin d'accès
 */
public class InputBox {
	Shell shell = null;
	Display display = MainApp.display;
	
	Text textChemin;
	Button btnValider;
	
	private String chemin = "";
	private String titre = "";
	private String commentaire = "";
	
	private Label lblEntrezUnCommentaire;
	private Label lblEntrezUnTitre;
	private Text textTitre;
	private Text textComm;
	
	/**
	 * Charge les éléments de la fenêtre
	 */
	/**
	 * @wbp.parser.entryPoint
	 */
	public void open () {
		shell = new Shell(display, SWT.APPLICATION_MODAL | ( SWT.SHELL_TRIM & ~SWT.RESIZE & ~SWT.MAX));		// Crée une fenêtre non redimensionnable
		shell.setText("Ajouter une photo");
		shell.setSize(550, 230);
		shell.setImage(MainApp.icone);
		shell.addDisposeListener(new DisposeListener() {
			public void widgetDisposed(DisposeEvent arg0) {
				chemin = textChemin.getText();
				titre = textTitre.getText();
				commentaire = textComm.getText();
			}
		});
		
		Label lblEntrezLeChemin = new Label(shell, SWT.NONE);
		lblEntrezLeChemin.setBounds(10, 10, 225, 15);
		lblEntrezLeChemin.setText("Entrez le chemin de votre photo :");
		
		textChemin = new Text(shell, SWT.BORDER);
		textChemin.setBounds(10, 31, 514, 21);
		textChemin.addKeyListener(new KeyListener() {
			
			@Override
			public void keyReleased(KeyEvent arg0) {
				if (arg0.keyCode == 13 || arg0.keyCode == 16777296) {
					chemin = textChemin.getText();
					titre = textTitre.getText();
					commentaire = textComm.getText();
					shell.dispose();
				}
			}
			
			@Override
			public void keyPressed(KeyEvent arg0) {
				
			}
		});
		
		btnValider = new Button(shell, SWT.NONE);
		btnValider.setBounds(449, 167, 75, 25);
		btnValider.setText("Valider");
		btnValider.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent arg0) {
				chemin = textChemin.getText();
				titre = textTitre.getText();
				commentaire = textComm.getText();
				shell.dispose();
			}
		});
		
		Button btnChoisir = new Button(shell, SWT.NONE);
		btnChoisir.setBounds(10, 167, 75, 25);
		btnChoisir.setText("Choisir");
		
		lblEntrezUnCommentaire = new Label(shell, SWT.NONE);
		lblEntrezUnCommentaire.setBounds(10, 106, 225, 15);
		lblEntrezUnCommentaire.setText("Entrez un commentaire :");
		
		lblEntrezUnTitre = new Label(shell, SWT.NONE);
		lblEntrezUnTitre.setBounds(10, 58, 225, 15);
		lblEntrezUnTitre.setText("Entrez un titre :");
		
		textTitre = new Text(shell, SWT.BORDER);
		textTitre.setBounds(10, 79, 514, 21);
		textTitre.addKeyListener(new KeyListener() {
			
			@Override
			public void keyReleased(KeyEvent arg0) {
				if (arg0.keyCode == 13 || arg0.keyCode == 16777296) {
					chemin = textChemin.getText();
					titre = textTitre.getText();
					commentaire = textComm.getText();
					shell.dispose();
				}
			}
			
			@Override
			public void keyPressed(KeyEvent arg0) {
				
			}
		});
		
		textComm = new Text(shell, SWT.BORDER);
		textComm.setBounds(10, 127, 514, 21);
		textTitre.addKeyListener(new KeyListener() {
			
			@Override
			public void keyReleased(KeyEvent arg0) {
				if (arg0.keyCode == 13 || arg0.keyCode == 16777296) {
					chemin = textChemin.getText();
					titre = textTitre.getText();
					commentaire = textComm.getText();
					shell.dispose();
				}
			}
			
			@Override
			public void keyPressed(KeyEvent arg0) {
				
			}
		});
		
		// Bouton pour choisir la photo
		btnChoisir.addSelectionListener(new SelectionAdapter() {
				@Override
				public void widgetSelected(SelectionEvent arg0) {
					FileDialog fileDialog = new FileDialog(shell, SWT.NONE);

					fileDialog.setFilterExtensions(new String[]{"*.jpg", "*.png", "*.*"});
					fileDialog.setFilterNames(new String[]{ "Format JPEG", "Format PNG", "Tous"});
					
					String firstFile = fileDialog.open();
					
					if(firstFile != null) {
						textChemin.setText(new File(fileDialog.getFilterPath(), fileDialog.getFileName()).getAbsolutePath());
					}
				}
		});
		
		shell.setActive();
		shell.open();

	    while (!shell.isDisposed()) {
	      if (!display.readAndDispatch())
	        display.sleep();
	    }
	}

	/**
	 * Renvoie le chemin entré par l'utilisateur
	 * @return
	 */
	public String getChemin () {
		return chemin;
	}
	
	/**
	 * Renvoie le titre choisi par l'utilisateur
	 * @return
	 */
	public String getTitre () {
		return titre;
	}
	
	/**
	 * Renvoie le commentaire de l'utilisateur
	 * @return
	 */
	public String getComm () {
		return commentaire;
	}
}
